# 类似reduceByKey，但是这个函数不会自动对key进行聚合，无法对K-V值数据做到reduceByKey的效果
# coding:utf8
from pyspark import SparkContext, SparkConf

if __name__ == '__main__':
    conf = SparkConf().setAppName("test").setMaster("local[*]")
    sc = SparkContext(conf=conf)

    rdd1 = sc.parallelize([1, 2, 3, 4, 5])
    print(rdd1.reduce(lambda x, y: x + y))

    def my_reduce(x,y):
        key = x[0]
        result = 0
        for i in x[1]:
            result += i
        return key, result

    rdd2 = sc.parallelize([('a',1),('a',2),('b',6),('b',2)])
    # 这种聚合方法效率低下，不建议这么聚合
    print(rdd2.groupByKey().map(lambda x:list(x[1])).collect())

